package ar.edu.unsam.algo3.plantasvszombies.ui.ApplicationModels

import ar.edu.unsam.algo3.plantasvszombies.dominio.Fila
import ar.edu.unsam.algo3.plantasvszombies.dominio.Jardin
import ar.edu.unsam.algo3.plantasvszombies.dominio.JardinZen
import ar.edu.unsam.algo3.plantasvszombies.dominio.Mejora
import ar.edu.unsam.algo3.plantasvszombies.dominio.Planta
import ar.edu.unsam.algo3.plantasvszombies.homes.HomeMejoras
import java.util.List
import org.uqbar.commons.utils.ApplicationContext
import org.uqbar.commons.utils.Observable

@Observable
class JardinZenAppModel {
	@Property Jardin jardin
	@Property FilaAppModel filaAppModel
	@Property JardinZen jardinZen
	@Property List<Planta> result
	@Property Planta plantaSeleccionada
	@Property List<Mejora> mejorasPosibles
	@Property Mejora mejoraSeleccionada
	@Property Fila fila

	def void actualizar() {
		mejorasPosibles = homeMejoras.mejoras
		plantaSeleccionada = null
		mejoraSeleccionada = null
		result = null
		result = jardinZen.plantines
	}

	def siguienteZen() {
		val index = jardin.tiposPosibles.indexOf(jardinZen)
		if (index + 1 < jardin.tiposPosibles.size) {
			jardinZen = jardin.tiposPosibles.get(index + 1)
		} else {
			jardinZen = jardin.tiposPosibles.get(0)
		}
		actualizar
	}

	def mejorar() {
		mejoraSeleccionada.jardin = jardin
		mejoraSeleccionada.aplicarMejora(plantaSeleccionada)
		actualizar
	}

	def HomeMejoras getHomeMejoras() {
		ApplicationContext::instance.getSingleton(typeof(Mejora))
	}

}
